package com.zeyun.EasyOnlineShareCloud.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zeyun.EasyOnlineShareCloud.dto.req.admin.FileUpdateStatusReqDTO;
import com.zeyun.EasyOnlineShareCloud.dto.req.admin.UserAddReqDTO;
import com.zeyun.EasyOnlineShareCloud.dto.req.admin.UserEditReqDTO;
import com.zeyun.EasyOnlineShareCloud.dto.resp.admin.*;

/**
 * 管理员服务接口
 */
public interface AdminService {

	/**
	 * 获取仪表盘数据
	 *
	 * @return 仪表盘数据
	 */
	DashboardRespDTO getDashboardData();

	/**
	 * 分页获取用户列表
	 *
	 * @return 用户列表
	 */
	Page<UserListRespDTO> getUserListByPage(int pageNum, int pageSize);

	/**
	 * 重置用户密码
	 *
	 * @param userId 用户ID
	 * @return 重置密码结果
	 */
	ResetPasswordRespDTO resetUserPassword(String userId);

	/**
	 * 删除用户
	 *
	 * @param userId 用户ID
	 */
	void deleteUser(String userId);

	/**
	 * 添加用户
	 *
	 * @param requestParam 用户添加请求参数
	 */
	UserAddRespDTO addUser(UserAddReqDTO requestParam);

	/**
	 * 更新用户信息
	 *
	 * @param requestParam 用户编辑请求参数
	 */
	void editUser(UserEditReqDTO requestParam);

	/**
	 * 分页获取文件列表
	 *
	 * @param pageNum  页码
	 * @param pageSize 每页大小
	 * @param fileName 文件名（可选）
	 * @param fileType 文件类型（可选）
	 * @param status   文件状态（可选）
	 * @param auditStatus   审核状态（可选）
	 * @param sortBy   排序方式（可选，格式：字段名-排序方向）
	 * @return 文件列表分页数据
	 */
	Page<FileRespDTO> getFileListByPage(int pageNum, int pageSize,
									String fileName, String fileType,
									String status, String auditStatus, String sortBy);

	/**
	 * 更新文件状态
	 *
	 * @param requestParam 文件状态更新请求参数
	 */
	void updateFileStatus(FileUpdateStatusReqDTO requestParam);

	/**
	 * 删除文件
	 *
	 * @param fileId 文件ID
	 */
	void deleteFile(String fileId);


}